<?php

class Application_Model_Lecturas extends Sgit_Model
{  
    protected $_name = 'lecturas';
    protected $_primary = 'id';


    
   public function _getConsumos($id,$where=array(),$limit=20)
   {

        $mes_consumo     = new Zend_Db_Expr("MONTH(SUBDATE(DATE_FORMAT(concat(anio,'-',mes,'-10'), '%Y-%m-%d'),  INTERVAL 1 MONTH))");
        $anio_consumo    = new Zend_Db_Expr("YEAR(SUBDATE(DATE_FORMAT(concat(anio,'-',mes,'-10'), '%Y-%m-%d'),  INTERVAL 1 MONTH))");
        
        $mes_consumo_anterior     = new Zend_Db_Expr("MONTH(SUBDATE(DATE_FORMAT(concat(anio,'-',mes,'-10'), '%Y-%m-%d'),  INTERVAL 2 MONTH))");
        $anio_consumo_anterior    = new Zend_Db_Expr("YEAR(SUBDATE(DATE_FORMAT(concat(anio,'-',mes,'-10'), '%Y-%m-%d'),  INTERVAL 2 MONTH))");
        
        $lectura_anterior = new Zend_Db_Expr("(SELECT cantidad FROM lecturas WHERE id_con=$id AND mes=mes_consumo AND anio=anio_consumo)");
        $lectura_anterior_2 = new Zend_Db_Expr("(SELECT cantidad FROM lecturas WHERE id_con=$id AND mes=mes_consumo_anterior AND anio=anio_consumo_anterior)");

        $select=$this->getAdapter()->select();
        $select->from(array('lecturas'),array('cantidad','f_lectura','anio','mes','mes_consumo'=>$mes_consumo,'anio_consumo'=>$anio_consumo,'mes_consumo_anterior'=>$mes_consumo_anterior,'anio_consumo_anterior'=>$anio_consumo_anterior,/*'consumo'=>$cantidad,'consumo_anterior'=>$cantidad_anterior,*/'lectura_anterior'=>$lectura_anterior,'lectura_anterior_2'=>$lectura_anterior_2))
            ->where('id_con = ?', $id)
            ->order(array("anio desc","mes desc" ))
            ->limit($limit);
        
        foreach($where as $k => $v)
        {
            $select->where($k,$v);
        }
        

        $consumos = $this->getAdapter()->fetchAll($select); 
        return $consumos;
   }
   
    
   public function getConsumos($id,$where=array(),$limit=20)
   {

        $rows= $this->_getConsumos($id,$where,$limit);

        foreach($rows as $v){
            $k=$v['anio'].str_pad($v['mes'],2,'0',STR_PAD_LEFT);
            $lectura['mes']= $v['mes'];
            $lectura['mes_consumo']=$v['mes_consumo'];
            $lectura['mes_consumo_anterior']= $v['mes_consumo_anterior'];
            $lectura['anio']= $v['anio'];
            $lectura['anio_consumo']=$v['anio_consumo'];
            $lectura['anio_consumo_anterior']= $v['anio_consumo_anterior'];
            
            $lectura['lectura']=$v['cantidad'];
            $lectura['lectura_anterior']=$v['lectura_anterior'];
            $lectura['lectura_anterior_2']=$v['lectura_anterior_2'];
            
            if(!is_null($lectura['lectura_anterior'])){
                $lectura['consumo']=$lectura['lectura'] - $lectura['lectura_anterior'];
            }else{
                $lectura['consumo']=0;
            }
            
            if(!is_null($lectura['lectura_anterior_2'])){
                $lectura['consumo_anterior']=$lectura['lectura_anterior'] - $lectura['lectura_anterior_2'];
            }else{
                $lectura['consumo_anterior']=0;
            }
     
            $date=mktime(0,0,0,$v['mes'],15,$v['anio']);
            $date2=mktime(0,0,0,$v['mes_consumo'],15,$v['anio_consumo']);
            $lectura['date_consumo']=$date;
            $lectura['date_consumo_anterior']=$date2;
            
            
            $lectura['horas_mes_consumo']=date('t',$date)*24;
            $lectura['horas_mes_consumo_anterior']=date('t',$date2)*24;
            
            $lectura['potencia']=round($lectura['consumo']/$lectura['horas_mes_consumo'],4);
            $lectura['potencia_anterior']=round($lectura['consumo_anterior']/$lectura['horas_mes_consumo_anterior'],4);
            if($lectura['potencia_anterior'])$lectura['incremento_potencia']=round(100*($lectura['potencia']-$lectura['potencia_anterior']) / $lectura['potencia_anterior'],4);
            
            $salida[$k]=$lectura;
        }
        return $salida;
   }
   
   public function getConsumo($id,$anio=null,$mes=null)
   {
        $idZona= Zend_Controller_Front::getInstance()->getRequest()->getParam('idZona');
        
        if(!is_null($anio) && !is_null($mes))
        {
            
        }else{
            if(!$this->_last_imputacion){
                $ImputacionElectricidad=new Application_Model_ImputacionElectricidad();
                $this->_last_imputacion=$ImputacionElectricidad->getLastImputacion($idZona);
            }
            $anio=$this->_last_imputacion['anio'];
            $mes=$this->_last_imputacion['mes'];

        }

        $t=mktime(0,0,0,$mes-1,1,$anio);
        $mes=date('n',$t);
        $anio=date('Y',$t);

        $where['anio = ?']=$anio;
        $where['mes = ?']=$mes;

        $rows= $this->getConsumos($id,$where);


        return @array_shift($rows);;
   }
}  




